import axios from 'axios';
import path from "@/uitlsJs/Axios/path.js";

const http = axios.create({
    baseURL: 'http://localhost:8080/',
    timeout: 100000,
    responseType: 'stream',

});

// 添加数据
async function startStream(msg, AddDataRendering) {
    //上一次的数据长度
    let upData = 0;

    return await http({
        url: path.ai,
        method: 'get',
        params: {
            msg
        },
        onDownloadProgress: (progressEvent) => {

            const dataChunk = progressEvent.event.target.responseText.split('\n');

            const data = [];
            // 判断上一次的数据 是否为空
            if (upData > 0) {
                // 获取 添加的数据 并返回
                let strings = dataChunk.slice(upData, dataChunk.length);
                // 更新 上一次的数据长度
                upData += strings.length - 1;

                strings.forEach((chunk) => {
                    if (chunk.startsWith("data:")) {
                        data.push(chunk.replace("data:", ""));
                    }
                })

                // 渲染
                AddDataRendering(data.join(""))
                return;
            }


            // 获取数据
            dataChunk.forEach((chunk) => {
                if (chunk.startsWith("data:")) {
                    data.push(chunk.replace("data:", ""));
                }
            })
            // 更新 上一次的数据
            upData = data.length - 1;
            // 渲染
            AddDataRendering(data.join(""))
        },
    })

}

export default {startStream}